Перейти к основному содержимому

sc.table

Table модуль для API компьютера!


Функции

merge

sc.table.merge( tbl1, tbl2, fullOverwrite )

Совмещает 2 таблицы в 1.

Важно!

Порядок, в котором вы размещаете таблицы в sc.table.merge, имеет значение! tbl2 переопределит/перезапишет все, что находится внутри tbl1!

Аргументы:

  • tbl1 [ table ] Первая таблица.
  • tbl2 [ table ] Вторая таблица.
  • fullOverwrite [ boolean? ] Это приведет к тому, что объединенное значение всегда будет из таблицы 2. Не будет заботиться ни о чем другом. По умолчанию установлено false.

Возвращает:

  • tbl [ table ] Совмещённая таблица.

clone

sc.table.clone( tbl )

Копирует таблицу.

Эта функция на самом деле не обязательно должна существовать

Эта функция совершенно не нужна, но в НЕКОТОРЫХ ситуациях полезна. Она создает новую таблицу, но её настолько легко реализовать, что я не думаю, что она заслуживает того, чтобы иметь свою функцию.

Почему бы и нет

Нажмите на этот раскрывающийся список, чтобы понять, почему это несправедливо.

Это весь код, который использует функция...

---Копирует таблицу
---@param tbl table Таблица для копирования
---@return table clonedTable Скопированная таблица
sc.table.clone = function (tbl)
    assert(type(tbl) == "table", "Expected table, got "..type(tbl).." instead.") -- Отслеживание ошибки

    return unpack({tbl})
end

Слишком мало кода! Я мог бы сделать это по-другому, но у других методов есть свои недостатки! Итак, это самое простое, что я могу сделать.

Аргументы:

  • tbl [ table ] Таблица для копирования.

Возвращает:

  • [ table ] Скопированная таблица.

getItemAt

sc.table.getItemAt( tbl, index )

Получает элемент из таблицы через индекс. В отличие от tbl[index]. Это не будет иметь значения, если номера индексов не в порядке.

-- Это наши актуальные задачи
local todo = {
[25] = "Добавить поддержку стекла для камеры"
[69] = "Добавить параметр для динамиков. Позволяет добавлять, например \"wind\" параметр к звуку"
[4825] = "Добавить дисплеи 512x512 и 1024x1024 для 3x3, 2x2 и 1x1 (я собираюсь добавить это несмотря ни на что :) )"
}

local lastTodoGood = sc.table.getItemAt(todo, 3) -- Работает! Возвращает элемент с индексом 4825. Так как это третий элемент в таблице
local lastTodoBad = todo[3]                      -- Не работает! Пытается получить элемент с индексом 3, но его не существует! так это nil!

print("lastTodoGood: "..tostring(lastTodoGood))
print("lastTodoBad: " ..tostring(lastTodoBad ))

Вы видите, что tbl[index] выдаст ошибку, но не sc.table.getItemAt.

Аргументы:

  • tbl [ table ] Таблица.
  • index [ integer ] Индекс объекта для получения.

Возвращает:

  • [ any ] Любую информацию, полученную по этому индексу в таблице.

getTotalItems

sc.table.getTotalItems( tbl )

Получает все элементы через цикл ipairs.

В отличие от #tbl, если индексация была странной, #tbl вернет 0. Эту функцию не волнует, является ли система индексации странной. Даст тот же результат, как если бы система индексации была нормальной.

Для словарей используйте sc.table.getTotalItemsDict.

Аргументы:

  • tbl [ table ] Таблица.

Возвращает:

  • [ integer ] Количество элементов в таблице.

getTotalItemsDict

sc.table.getTotalItemsDict( tbl )

Получает все элементы с помощью цикла pairs. Это используется для словарей. в противном случае используйте sc.table.getTotalItems.

В отличие от #tbl, если индексация была странной, #tbl вернет 0. Эту функцию не волнует, является ли система индексации странной. Даст тот же результат, как если бы система индексации была нормальной.

Аргументы:

  • tbl [ table ] Таблица.

Возвращает:

  • [ integer ] Количество элементов в таблице.

isDictonary

sc.table.isDictonary( tbl )

Возвращает true, если это словарь.

Аргументы:

  • tbl [ table ] Таблица для проверки.

Возвращает:

  • [ boolean ] true, если это словарь.

itemExistsInList

sc.table.itemExistsInList( tbl, item )

Возвращает true, если элемент найден в таблице.

Аргументы:

  • tbl [ table ] Таблица для проверки.
  • item [ any ] Элемент для поиска. (Не может быть nil!).

Возвращает:

  • [ boolean ] true, если найден, false, если нет.

numberlyOrderTable

sc.table.numberlyOrderTable( tbl )

Упорядочивает таблицу от 1 до размера таблицы.

Аргументы:

  • tbl [ table ] Таблица для упорядочивания.

Возвращает:

  • [ table ] Упорядоченная таблица.

shiftTableIndexes

sc.table.shiftTableIndexes( tbl, shiftAmount )

Смещает индексы списка.

Аргументы:

  • tbl [ table ] Таблица.
  • shiftAmount [ integer ] Сумма для сдвига.

Возвращает:

  • [ table ] Сдвинутая таблица.

toString

sc.table.toString( tbl )

Преобразует таблицу в то же самое, но в строку. Если бы вы попытались сделать это с помощью tostring Lua, то вы просто получите «table: 00A59928». Не фактическое содержимое самой таблицы!

Аргументы:

  • tbl [ table ] Таблица.

Возвращает:

  • [ string ] Lua таблица в виде строки.